/**
 * Trabajo de Ingeniería de Software 2
 * Año 2008
 * Sistema de Reserva de Recursos.
 * Desarrolladores: - Marcelo Ferreira.
 *                  - Christian Gómez.
 *                  - Marcelo Rodas.
 */

package modelo;

import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Clase Entidad Ubicacion (JPA)
 * @author cgomez
 */
@Entity
@Table(name = "ubicacion")
@NamedQueries({@NamedQuery(name = "Ubicacion.findByIdUbicacion", query = "SELECT u FROM Ubicacion u WHERE u.idUbicacion = :idUbicacion"), @NamedQuery(name = "Ubicacion.findByDescripcionUbicacion", query = "SELECT u FROM Ubicacion u WHERE u.descripcionUbicacion = :descripcionUbicacion")})
public class Ubicacion implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @Column(name = "idUbicacion", nullable = false)
    private Integer idUbicacion;
    @Column(name = "descripcionUbicacion", nullable = false)
    private String descripcionUbicacion;
    @OneToMany(mappedBy = "idUbicacion")
    private Collection<Usoretiro> usoretiroCollection;
    
    /**
     * Crea una nueva instancia de Ubicacion
     */ 
    public Ubicacion() {
    }
    /**
     * Crea una nueva instancia de Ubicacion con valores especificos
     * @param idUbicacion El idUbicacion de Ubicacion
     */
    public Ubicacion(Integer idUbicacion) {
        this.idUbicacion = idUbicacion;
    }
    /**
     * Crea una nueva instancia de Ubicacion con valores especificos
     * @param idUbicacion El identificador idUbicacion de Ubicacion
     * @param descripcionUbicacion El identificador descripcionUbicacion de Ubicacion
     */
    public Ubicacion(Integer idUbicacion, String descripcionUbicacion) {
        this.idUbicacion = idUbicacion;
        this.descripcionUbicacion = descripcionUbicacion;
    }
    /**
     * Obtiene el idUbicacion de Ubicacion
     * @return El idUbicacion de Ubicacion
     */
    public Integer getIdUbicacion() {
        return idUbicacion;
    }
    /**
     * Fija el identificador idUbicacion de Ubicacion al valor especificado
     * @param idUbicacion El identificador idUbicacion de Ubicacion
     */
    public void setIdUbicacion(Integer idUbicacion) {
        this.idUbicacion = idUbicacion;
    }
    /**
     * Obtiene el descripcionUbicacion de Ubicacion
     * @return El descripcionUbicacion de Ubicacion
     */
    public String getDescripcionUbicacion() {
        return descripcionUbicacion;
    }
    /**
     * Fija el identificador descripcionUbicacion de Ubicacion al valor especificado
     * @param descripcionUbicacion El identificador descripcionUbicacion de Ubicacion
     */
    public void setDescripcionUbicacion(String descripcionUbicacion) {
        this.descripcionUbicacion = descripcionUbicacion;
    }
    /**
     * Obtiene un usoretiroCollection de Ubicacion
     * @return el usoretiroCollection de Ubicacion
     */
    public Collection<Usoretiro> getUsoretiroCollection() {
        return usoretiroCollection;
    }
    /**
     * Fija el usoretiroCollection de Ubicacion al valor especificado
     * @param usoretiroCollection El usoretiroCollection de Ubicacion
     */
    public void setUsoretiroCollection(Collection<Usoretiro> usoretiroCollection) {
        this.usoretiroCollection = usoretiroCollection;
    }
    
    /**
     * Retorna un valor de Hash para el objeto.
     * Esta implementacion evalua un valor hash basado sobre los campos id en este objeto
     * @return Un valor de hash para este objeto
     */
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idUbicacion != null ? idUbicacion.hashCode() : 0);
        return hash;
    }
    
    /**
     * Determina si otro objeto es igual a Ubicacion. El resultado es
     * <code>true</code> si y solo si el argumento no es nulo y es un objeto Ubicacion
     * que tiene el mismo valor del campo id en este objeto.
     * @param object La referencia objeto con el cual comparar
     * @return <code>true</code> Si este objeto es la misma que su argumento;
     * <code>false</code> si no lo es.
     */
    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Ubicacion)) {
            return false;
        }
        Ubicacion other = (Ubicacion) object;
        if ((this.idUbicacion == null && other.idUbicacion != null) || (this.idUbicacion != null && !this.idUbicacion.equals(other.idUbicacion))) {
            return false;
        }
        return true;
    }
    
    /**
     * Retorna una representacion String de este objeto.  Esta implementacion This implementation construye
     * la representacion basada en los campos.
     * @return Una representacion String del objeto.
     */
    @Override
    public String toString() {
        return idUbicacion + "("+this.getDescripcionUbicacion()+")";
    }

}
